package br.uniceub.fsw.academicmobile.vo;

import br.uniceub.fsw.academicmobile.dao.CursoDAO;
import br.uniceub.fsw.academicmobile.dao.DisciplinaDAO;
import br.uniceub.fsw.academicmobile.dao.ProfessorDAO;

/**
 * Tabela tb_turma
 * @author Christian Moryah
 */
public class TurmaVO {

    /**
     * Coluna ID_turma
     */
    private Integer idTurma;
    
    /**
     * Coluna tb_disciplina_ID_CD_disciplina
     */
    private Integer tbDisciplinaIdCdDisciplina;
    
    /**
     * Coluna tb_professor_ID_CD_drt
     */
    private Long tbProfessorIdCdDrt;
    
    /**
     * Coluna tb_curso_ID_CD_curso
     */
    private Integer tbCursoIdCdCurso;
    
    /**
     * Coluna HR_turno
     */
    private String hrTurno;
    
    /**
     * Coluna HR_turma
     */
    private String hrTurma;
    
    /**
     * Coluna SG_turma
     */
    private String sgTurma;
    
    /**
     * Coluna DT_ano
     */
    private Integer dtAno;
    
    /**
     * Coluna NR_semestre
     */
    private Integer nrSemestre;
    
    /**
     * Disciplina relacionada pela coluna tb_disciplina_ID_CD_disciplina
     */
    private DisciplinaVO disciplina;
    
    /**
     * Professor relacionado pela coluna tb_professor_ID_CD_drt
     */
    private ProfessorVO professor;
    
    /**
     * Curso relacionado pela coluna tb_curso_ID_CD_curso
     */
    private CursoVO curso;

    /**
     * Metodo que traz o objeto curso referenciado pela classe do banco,
     * ha a necessidade da turma possuir o id do curso.
     * @return CursoVO objeto curso referenciado pela turma.
     */
    public CursoVO getCurso() {
        if(this.curso == null){
                this.curso = new CursoVO();
                this.curso.setIdCdCurso(this.tbCursoIdCdCurso);
                this.curso = new CursoDAO().consultarCursoPorId(curso);
        }
        return curso;
    }

    public void setCurso(CursoVO curso) {
        this.curso = curso;
    }

    /**
     * Metodo que traz o objeto disciplina referenciado pela classe do banco,
     * ha a necessidade da turma possuir o id da disciplina.
     * @return DisciplinaVO objeto disciplina referenciado pela turma.
     */
    public DisciplinaVO getDisciplina() {
		if(this.disciplina == null){
			this.disciplina = new DisciplinaVO();
			this.disciplina.setIdCdDisciplina(this.tbDisciplinaIdCdDisciplina);
			this.disciplina = new DisciplinaDAO().consultarDisciplinaPorId(disciplina);
		}
		return disciplina;
    }

    public void setDisciplina(DisciplinaVO disciplina) {
        this.disciplina = disciplina;
    }

    public Integer getDtAno() {
        return dtAno;
    }

    public void setDtAno(Integer dtAno) {
        this.dtAno = dtAno;
    }

    public String getHrTurma() {
        return hrTurma;
    }

    public void setHrTurma(String hrTurma) {
        this.hrTurma = hrTurma;
    }

    public String getHrTurno() {
        return hrTurno;
    }

    public void setHrTurno(String hrTurno) {
        this.hrTurno = hrTurno;
    }

    public Integer getIdTurma() {
        return idTurma;
    }

    public void setIdTurma(Integer idTurma) {
        this.idTurma = idTurma;
    }

    public Integer getNrSemestre() {
        return nrSemestre;
    }

    public void setNrSemestre(Integer nrSemestre) {
        this.nrSemestre = nrSemestre;
    }

    /**
     * Metodo que traz o objeto professor referenciado pela classe do banco,
     * ha a necessidade da turma possuir o id do professor.
     * @return ProfessorVO objeto professor referenciado pela turma.
     */   
    public ProfessorVO getProfessor() {
		if(this.professor == null){
			this.professor = new ProfessorVO();
			this.professor.setIdCdDrt(this.tbProfessorIdCdDrt);
			this.professor = new ProfessorDAO().consultarProfessorPorId(professor);
		}
		return professor;
    }

    public void setProfessor(ProfessorVO professor) {
        this.professor = professor;
    }

    public String getSgTurma() {
        return sgTurma;
    }

    public void setSgTurma(String sgTurma) {
        this.sgTurma = sgTurma;
    }

    public Integer getTbCursoIdCdCurso() {
        return tbCursoIdCdCurso;
    }

    public void setTbCursoIdCdCurso(Integer tbCursoIdCdCurso) {
        this.tbCursoIdCdCurso = tbCursoIdCdCurso;
    }

    public Integer getTbDisciplinaIdCdDisciplina() {
        return tbDisciplinaIdCdDisciplina;
    }

    public void setTbDisciplinaIdCdDisciplina(Integer tbDisciplinaIdCdDisciplina) {
        this.tbDisciplinaIdCdDisciplina = tbDisciplinaIdCdDisciplina;
    }

    public Long getTbProfessorIdCdDrt() {
        return tbProfessorIdCdDrt;
    }

    public void setTbProfessorIdCdDrt(Long tbProfessorIdCdDrt) {
        this.tbProfessorIdCdDrt = tbProfessorIdCdDrt;
    }
    
    
}
